#ifndef B2D_VERTEX_H
#define B2D_VERTEX_H

#include "Maths.h"


NS_B2D_BEGIN

typedef uint32 VertexFormat;

////////////////////////////////////////////////////////////////////////////////////////////////////
/// \brief	Static structure containing information about the
/// 		different attributes available.
////////////////////////////////////////////////////////////////////////////////////////////////////
struct B2D_API VertexAttribute
{

	////////////////////////////////////////////////////////////////////////////////////////////////////
	/// \brief	Different attributes available
	////////////////////////////////////////////////////////////////////////////////////////////////////
	enum
	{
		ATTRIBUTE_POSITION,
		ATTRIBUTE_COLOR,
		ATTRIBUTE_NORMAL,
		ATTRIBUTE_TEXCOORD0,
		ATTRIBUTE_TEXCOORD1,
		COUNT
	};

	////////////////////////////////////////////////////////////////////////////////////////////////////
	/// \brief	Sizes (in bytes) for each attribute.
	////////////////////////////////////////////////////////////////////////////////////////////////////
	static const size_t sizes[];
	////////////////////////////////////////////////////////////////////////////////////////////////////
	/// \brief	Number of elements in each attribute.
	////////////////////////////////////////////////////////////////////////////////////////////////////
	static const size_t elements[];
};


////////////////////////////////////////////////////////////////////////////////////////////////////
/// \brief	Structure for vertices containing one set of positions and one set of
/// 		texutre coordinates.
////////////////////////////////////////////////////////////////////////////////////////////////////
struct B2D_API PTVertex
{
	const static VertexFormat Format = 1<<VertexAttribute::ATTRIBUTE_POSITION | 1<<VertexAttribute::ATTRIBUTE_TEXCOORD0;

	float x, y, u, v;
	PTVertex(void) : x(0), y(0), u(0), v(0){}
	PTVertex(float _x, float _y, float _u, float _v) : x(_x), y(_y), u(_u), v(_v){}
};


NS_B2D_END

#endif